const rp = require('request-promise-native');
var { env, sql_root } = require('../config.js');
let wechat = require('./accessToken.js')
/**
 * 获取请求链接
 * @param {String} url
 * @return {String} api 完整的请求链接
 */
async function get_api(url) {
    let { access_token } = await wechat.returnAccess()
    api = `${sql_root}${url}`
    if (api.indexOf("?") == -1) {
        api += "?"
    }
    api += `access_token=${access_token}`
    return api
}
/**
 * 自定义url发送请求 POST
 * @param {String} url   https://api.weixin.qq.com/tcb/updateindex?access_token=ACCESS_TOKEN  只需要传 updateindex就可以，方法会自行拼接完整的url
 * @param {Object} data  需要传递的POST数据
 * @return {Promise}
 */
async function post_url(url, data) {
    url = await get_api(url)
    return rp({
        url: url,
        method: "POST",
        json: true,
        headers: {
            "content-type": "application/json"
        },
        body: {
            env: env,
            ...data
        }
    })
}

module.exports = {
    /**
     * 集合数据的操作
     * 可自行定义方法
     * 
     * 1-以查询为例  找到文档官网的链接为 https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN
     * 2-拿取 databasequery 
     * 3- post_sql_add（方法名字自定义） : post_url_fun('databaseadd')  在下面加这个，就可以在routes/index.js 引入使用
     */
    post_sql_query: post_url.bind(null, 'databasequery'),
    post_sql_add: post_url.bind(null, 'databaseadd'),
    post_sql_delete: post_url.bind(null, 'databasedelete'),
    post_sql_update: post_url.bind(null, 'databaseupdate'),

    post_url: post_url
}
